]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
chrome: don't show visibleInOverview chrome when the screensaver is active
authorDan Winship <danw@gnome.org>
Mon, 6 Jun 2011 15:05:34 +0000 (11:05 -0400)
committerDan Winship <danw@gnome.org>
Thu, 14 Jul 2011 16:51:18 +0000 (12:51 -0400)
visibleInOverview chrome was visible even when the screensaver was
active. Although we may eventually need visibleInScreenSaver, that
should be a separate flag.

Fix this by tracking the screensaver active state, and hiding the chrome
when the screensaver is active.

https://bugzilla.gnome.org/show_bug.cgi?id=654550

js/ui/chrome.js

index f2a7d149ce687972873d6d426dbde26a6b5dc32e..5dd21e5e806d6b8cb449f68b9c02cbbfc949de8e 100644 (file)
@@ -8,6 +8,7 @@ const Signals = imports.signals;
 
 const Main = imports.ui.main;
 const Params = imports.misc.params;
+const ScreenSaver = imports.misc.screenSaver;
 
 // This manages the shell "chrome"; the UI that's visible in the
 // normal mode (ie, outside the Overview), that surrounds the main
@@ -49,6 +50,14 @@ Chrome.prototype = {
         Main.overview.connect('hidden',
                              Lang.bind(this, this._overviewHidden));
 
+        this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy();
+        this._screenSaverProxy.connect('ActiveChanged', Lang.bind(this, this._onScreenSaverActiveChanged));
+        this._screenSaverProxy.GetActiveRemote(Lang.bind(this,
+            function(result, err) {
+                if (!err)
+                    this._onScreenSaverActiveChanged(this._screenSaverProxy, result);
+            }));
+
         this._relayout();
     },
 
@@ -212,6 +221,11 @@ Chrome.prototype = {
         this._queueUpdateRegions();
     },
 
+    _onScreenSaverActiveChanged: function(proxy, screenSaverActive) {
+        this.actor.visible = !screenSaverActive;
+        this._queueUpdateRegions();
+    },
+
     _findMonitorForRect: function(x, y, w, h) {
         // First look at what monitor the center of the rectangle is at
         let cx = x + w/2;